# 递归处理各子模块目录，按依赖顺序添加

# 跳表（上层状态机）模块
add_subdirectory(skipList)

# 公共工具模块（需注意：若其他模块依赖common，需保证common先被处理）
# 也可通过include_directories()设置头文件路径解决依赖
add_subdirectory(common)

# RPC模块
add_subdirectory(rpc)

# 协程模块
add_subdirectory(fiber)

# Raft RPC协议模块（protobuf相关）
add_subdirectory(raftRpcPro)

# Raft核心模块
add_subdirectory(raftCore)

# Raft客户端模块
add_subdirectory(raftClerk)

# 生成动态库（SHARED）
add_library(skip_list_on_raft STATIC  
    ${src_rpc}          # rpc模块源文件
    ${src_fiber}        # fiber协程模块源文件
    ${rpc_example}      # rpc示例相关源文件（若存在）
    ${raftsource}       # raft相关源文件（若存在）
    ${src_raftCore}     # raft核心模块源文件
    ${src_raftRpcPro}   # raft rpc协议相关源文件
)

# 链接依赖库（保持原依赖不变）
target_link_libraries(skip_list_on_raft 
    rpc_lib             # 子模块中定义的rpc库
    fiber_lib           # 子模块中定义的fiber库
    muduo_net muduo_base pthread dl  # 系统/第三方库
)